00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef IEELBL_HPP
00011 #define IEELBL_HPP
00012 #include "gridpack/component/data_collection.hpp"
00013 #include "gridpack/parser/dictionary.hpp"
00014 #include "gridpack/utilities/string_utils.hpp"
00015 namespace gridpack {
00016 namespace parser {
00017 template <class _data_struct> class IeelblParser
00018 {
00019 public:
00020
00021
00022
00023 explicit IeelblParser()
00024 {
00025 }
00026
00027
00028
00029
00030 virtual ~IeelblParser()
00031 {
00032 }
00033
00034
00035
00036
00037
00038
00039
00040 void extract(_data_struct &data_struct,
00041 gridpack::component::DataCollection *data, int l_id)
00042 {
00043 double rval;
00044 int ival;
00045 std::string stmp;
00046
00047
00048 if (!data->getValue(LOAD_MODEL,&stmp,l_id)) {
00049 data->addValue(LOAD_MODEL, data_struct.model, l_id);
00050 } else {
00051 data->setValue(LOAD_MODEL, data_struct.model, l_id);
00052 }
00053
00054
00055 if (!data->getValue(LOAD_A1,&rval,l_id)) {
00056 data->addValue(LOAD_A1, data_struct.a1, l_id);
00057 } else {
00058 data->setValue(LOAD_A1, data_struct.a1, l_id);
00059 }
00060
00061
00062 if (!data->getValue(LOAD_A2,&rval,l_id)) {
00063 data->addValue(LOAD_A2, data_struct.a2, l_id);
00064 } else {
00065 data->setValue(LOAD_A2, data_struct.a2, l_id);
00066 }
00067
00068
00069 if (!data->getValue(LOAD_A3,&rval,l_id)) {
00070 data->addValue(LOAD_A3, data_struct.a3, l_id);
00071 } else {
00072 data->setValue(LOAD_A3, data_struct.a3, l_id);
00073 }
00074
00075
00076 if (!data->getValue(LOAD_A4,&rval,l_id)) {
00077 data->addValue(LOAD_A4, data_struct.a4, l_id);
00078 } else {
00079 data->setValue(LOAD_A4, data_struct.a4, l_id);
00080 }
00081
00082
00083 if (!data->getValue(LOAD_A5,&rval,l_id)) {
00084 data->addValue(LOAD_A5, data_struct.a5, l_id);
00085 } else {
00086 data->setValue(LOAD_A5, data_struct.a5, l_id);
00087 }
00088
00089
00090 if (!data->getValue(LOAD_A6,&rval,l_id)) {
00091 data->addValue(LOAD_A6, data_struct.a6, l_id);
00092 } else {
00093 data->setValue(LOAD_A6, data_struct.a6, l_id);
00094 }
00095
00096
00097 if (!data->getValue(LOAD_A7,&rval,l_id)) {
00098 data->addValue(LOAD_A7, data_struct.a7, l_id);
00099 } else {
00100 data->setValue(LOAD_A7, data_struct.a7, l_id);
00101 }
00102
00103
00104 if (!data->getValue(LOAD_A8,&rval,l_id)) {
00105 data->addValue(LOAD_A8, data_struct.a8, l_id);
00106 } else {
00107 data->setValue(LOAD_A8, data_struct.a8, l_id);
00108 }
00109
00110
00111 if (!data->getValue(LOAD_N1,&rval,l_id)) {
00112 data->addValue(LOAD_N1, data_struct.n1, l_id);
00113 } else {
00114 data->setValue(LOAD_N1, data_struct.n1, l_id);
00115 }
00116
00117
00118 if (!data->getValue(LOAD_N2,&rval,l_id)) {
00119 data->addValue(LOAD_N2, data_struct.n2, l_id);
00120 } else {
00121 data->setValue(LOAD_N2, data_struct.n2, l_id);
00122 }
00123
00124
00125 if (!data->getValue(LOAD_N3,&rval,l_id)) {
00126 data->addValue(LOAD_N3, data_struct.n3, l_id);
00127 } else {
00128 data->setValue(LOAD_N3, data_struct.n3, l_id);
00129 }
00130
00131
00132 if (!data->getValue(LOAD_N4,&rval,l_id)) {
00133 data->addValue(LOAD_N4, data_struct.n4, l_id);
00134 } else {
00135 data->setValue(LOAD_N4, data_struct.n4, l_id);
00136 }
00137
00138
00139 if (!data->getValue(LOAD_N5,&rval,l_id)) {
00140 data->addValue(LOAD_N5, data_struct.n5, l_id);
00141 } else {
00142 data->setValue(LOAD_N5, data_struct.n5, l_id);
00143 }
00144
00145
00146 if (!data->getValue(LOAD_N6,&rval,l_id)) {
00147 data->addValue(LOAD_N6, data_struct.n6, l_id);
00148 } else {
00149 data->setValue(LOAD_N6, data_struct.n6, l_id);
00150 }
00151 }
00152
00153
00154
00155
00156
00157
00158
00159
00160 void parse(std::vector<std::string> &split_line,
00161 gridpack::component::DataCollection *data, int l_id)
00162 {
00163 double rval;
00164 int nstr = split_line.size();
00165 int ival;
00166
00167
00168 std::string stmp, model;
00169 gridpack::utility::StringUtils util;
00170 model = util.trimQuotes(split_line[1]);
00171 util.toUpper(model);
00172 if (!data->getValue(LOAD_MODEL,&stmp,l_id)) {
00173 data->addValue(LOAD_MODEL, model.c_str(), l_id);
00174 } else {
00175 data->setValue(LOAD_MODEL, model.c_str(), l_id);
00176 }
00177
00178
00179 if (nstr > 3) {
00180 if (!data->getValue(LOAD_A1,&ival,l_id)) {
00181 data->addValue(LOAD_A1, atof(split_line[3].c_str()), l_id);
00182 } else {
00183 data->setValue(LOAD_A1, atof(split_line[3].c_str()), l_id);
00184 }
00185 }
00186
00187
00188 if (nstr > 4) {
00189 if (!data->getValue(LOAD_A2,&rval,l_id)) {
00190 data->addValue(LOAD_A2, atof(split_line[4].c_str()), l_id);
00191 } else {
00192 data->setValue(LOAD_A2, atof(split_line[4].c_str()), l_id);
00193 }
00194 }
00195
00196
00197 if (nstr > 5) {
00198 if (!data->getValue(LOAD_A3,&rval,l_id)) {
00199 data->addValue(LOAD_A3, atof(split_line[5].c_str()), l_id);
00200 } else {
00201 data->setValue(LOAD_A3, atof(split_line[5].c_str()), l_id);
00202 }
00203 }
00204
00205
00206 if (nstr > 6) {
00207 if (!data->getValue(LOAD_A4,&rval,l_id)) {
00208 data->addValue(LOAD_A4, atof(split_line[6].c_str()), l_id);
00209 } else {
00210 data->setValue(LOAD_A4, atof(split_line[6].c_str()), l_id);
00211 }
00212 }
00213
00214
00215 if (nstr > 7) {
00216 if (!data->getValue(LOAD_A5,&rval,l_id)) {
00217 data->addValue(LOAD_A5, atof(split_line[7].c_str()), l_id);
00218 } else {
00219 data->setValue(LOAD_A5, atof(split_line[7].c_str()), l_id);
00220 }
00221 }
00222
00223
00224 if (nstr > 8) {
00225 if (!data->getValue(LOAD_A6,&rval,l_id)) {
00226 data->addValue(LOAD_A6, atof(split_line[8].c_str()), l_id);
00227 } else {
00228 data->setValue(LOAD_A6, atof(split_line[8].c_str()), l_id);
00229 }
00230 }
00231
00232
00233 if (nstr > 9) {
00234 if (!data->getValue(LOAD_A7,&rval,l_id)) {
00235 data->addValue(LOAD_A7, atof(split_line[9].c_str()), l_id);
00236 } else {
00237 data->setValue(LOAD_A7, atof(split_line[9].c_str()), l_id);
00238 }
00239 }
00240
00241
00242 if (nstr > 10) {
00243 if (!data->getValue(LOAD_A8,&rval,l_id)) {
00244 data->addValue(LOAD_A8, atof(split_line[10].c_str()), l_id);
00245 } else {
00246 data->setValue(LOAD_A8, atof(split_line[10].c_str()), l_id);
00247 }
00248 }
00249
00250
00251 if (nstr > 11) {
00252 if (!data->getValue(LOAD_N1,&rval,l_id)) {
00253 data->addValue(LOAD_N1, atof(split_line[11].c_str()), l_id);
00254 } else {
00255 data->setValue(LOAD_N1, atof(split_line[11].c_str()), l_id);
00256 }
00257 }
00258
00259
00260 if (nstr > 12) {
00261 if (!data->getValue(LOAD_N2,&rval,l_id)) {
00262 data->addValue(LOAD_N2, atof(split_line[12].c_str()), l_id);
00263 } else {
00264 data->setValue(LOAD_N2, atof(split_line[12].c_str()), l_id);
00265 }
00266 }
00267
00268
00269 if (nstr > 13) {
00270 if (!data->getValue(LOAD_N3,&rval,l_id)) {
00271 data->addValue(LOAD_N3, atof(split_line[13].c_str()), l_id);
00272 } else {
00273 data->setValue(LOAD_N3, atof(split_line[13].c_str()), l_id);
00274 }
00275 }
00276
00277
00278 if (nstr > 14) {
00279 if (!data->getValue(LOAD_N4,&rval,l_id)) {
00280 data->addValue(LOAD_N4, atof(split_line[14].c_str()), l_id);
00281 } else {
00282 data->setValue(LOAD_N4, atof(split_line[14].c_str()), l_id);
00283 }
00284 }
00285
00286
00287 if (nstr > 15) {
00288 if (!data->getValue(LOAD_N5,&rval,l_id)) {
00289 data->addValue(LOAD_N5, atof(split_line[15].c_str()), l_id);
00290 } else {
00291 data->setValue(LOAD_N5, atof(split_line[15].c_str()), l_id);
00292 }
00293 }
00294
00295
00296 if (nstr > 16) {
00297 if (!data->getValue(LOAD_N6,&rval,l_id)) {
00298 data->addValue(LOAD_N6, atof(split_line[16].c_str()), l_id);
00299 } else {
00300 data->setValue(LOAD_N6, atof(split_line[16].c_str()), l_id);
00301 }
00302 }
00303 }
00304
00305
00306
00307
00308
00309
00310 void store(std::vector<std::string> &split_line,_data_struct &data)
00311 {
00312 std::string sval;
00313 gridpack::utility::StringUtils util;
00314 sval = util.trimQuotes(split_line[1]);
00315 util.toUpper(sval);
00316
00317
00318 strcpy(data.model, sval.c_str());
00319 int nstr = split_line.size();
00320
00321
00322 if (nstr > 2) {
00323 sval = util.clean2Char(split_line[2]);
00324 strcpy(data.id, sval.c_str());
00325 }
00326
00327
00328 if (nstr > 3) {
00329 data.a1 = atof(split_line[3].c_str());
00330 }
00331
00332
00333 if (nstr > 4) {
00334 data.a2 = atof(split_line[4].c_str());
00335 }
00336
00337 if (nstr > 5) {
00338 data.a3 = atof(split_line[5].c_str());
00339 }
00340
00341
00342 if (nstr > 6) {
00343 data.a4 = atof(split_line[6].c_str());
00344 }
00345
00346
00347 if (nstr > 7) {
00348 data.a5 = atof(split_line[7].c_str());
00349 }
00350
00351
00352 if (nstr > 8) {
00353 data.a6 = atof(split_line[8].c_str());
00354 }
00355
00356
00357 if (nstr > 9) {
00358 data.a7 = atof(split_line[9].c_str());
00359 }
00360
00361
00362 if (nstr > 10) {
00363 data.a8 = atof(split_line[10].c_str());
00364 }
00365
00366
00367 if (nstr > 11) {
00368 data.n1 = atof(split_line[11].c_str());
00369 }
00370
00371
00372 if (nstr > 12) {
00373 data.n2 = atof(split_line[12].c_str());
00374 }
00375
00376
00377 if (nstr > 13) {
00378 data.n3 = atof(split_line[13].c_str());
00379 }
00380
00381
00382 if (nstr > 14) {
00383 data.n4 = atof(split_line[14].c_str());
00384 }
00385
00386
00387 if (nstr > 15) {
00388 data.n5 = atof(split_line[15].c_str());
00389 }
00390
00391
00392 if (nstr > 16) {
00393 data.n6 = atof(split_line[16].c_str());
00394 }
00395 }
00396 };
00397 }
00398 }
00399 #endif